<?php
/**

 */
Class Mssql{

    private $_connection;
    private $_result;

    /**
     * Devuelve una conexion MySQL, con los parametro del archivo config
     * @return Connection
     */
    public function __construct() {
        $host = Class_Config::get('hostDB');
        $pasword = Class_Config::get('passwordDB');
        
        $user = Class_Config::get('userDB');
        
        $dataBase = Class_Config::get('nameDB');
        $this->_connection = mssql_connect($host, $user, $pasword);
        if($this->_connection){
            if(mssql_select_db($dataBase, $this->_connection))
                     return $this->_connection;
            else
                echo 'Error al seleccionar la base de datos', 'Mssql.php';
        }
        else
            echo 'Error al conectar con el servidor', 'Mssql.php';
    }

    /**
     * Devuelve la cantidad de registros devueltas por una consulta SQL de lectura
     * @return int
     */
    public function num_rows() {
        return mssql_num_rows($this->_result);
    }

    /**
     * Devuelve el número de registros afectados por una consulta SQL de escritura
     * @return int
     */
    public function affected_rows() {
        return mssql_rows_affected($this->_connection);
    }

    /**
     * Devuelve el número de campos devueltos por la consulta SQL de lectura
     * @return int
     */
    public function field_count(){
        return mssql_num_fields($this->_result);
    }

    /**
     * Navega el Resulset devuelto por la consulta SQL
     * @param Array $result
     * @return Array
     */
    public function fetch_array($result) {
        return mssql_fetch_array($result);
    }

    /**
     * Ejecuta una consulta SQL
     * @param String $query
     * @return resulSet
     */
    public function executeQuery($query) {
        $this->_result = mssql_query($query);
        return $this->_result;
    }
    
    /**
     * Cierra la conexion MySQL
     */
    public function closeConeection() {
        mssql_close($this->_connection);
    }

    /**
     * Devulve una consulta
     * @param int $case
     * @param String $nameProcedure
     * @param Array $arrayParameters
     * @return string
     */
    public function concatScriptSQL($case = 1, $nameProcedure = null, $arrayParameters = null){
        if($case == 1)
            $sql = 'EXEC ';
        else
            $sql = 'SELECT ';
        
        if($case == 1)
            $sql =  $sql . Class_Configuration::get('prefixDB') . '_' . $nameProcedure . ' ';
        else 
            $sql =  $sql . Class_Configuration::get('prefixDB') . '_' . $nameProcedure . '(';
        
        if(!is_null($arrayParameters)){
            foreach ($arrayParameters as $parameter)
                $sql = $sql . "'$parameter'" . ',';
            $sql = substr($sql, 0, strlen($sql) - 1);
        }
        
        if($case != 1)
            $sql = $sql . ')';
        
        return $sql;
    }
}
